﻿using ContactSMS.Commons.QueryParameters;
using ContactSMS.Domain.Entity;
using ContactSMS.Domain.PagedResult;

namespace ContactSMS.Domain
{
    public interface IContactRepository
    {
        Task<PagedContactsResult> GetContactsAsync(ContactQueryParameters parameters, int page = 1, int pageSize = 10, long userId = 0);
        Task<Contact?> AddContactAsync(Contact contact);
        Task<Contact?> UpdateContactAsync(long id, Contact contact);
        Task<Contact?> DeleteContactByIdAsync(long id, long userId = 0);
        Task<List<Contact>?> DeleteContactByIdsAsync(long[] ids, long userId = 0);
        Task<Contact> GetContactByIdAsync(long id, long userId = 0);
    }
}
